/* 
 *	Copyright (C) 2009-2010 miaohua
 *	http://code.google.com/p/lrcshower/
 *
 *  This Program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *   
 *  This Program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *   
 *  You should have received a copy of the GNU General Public License
 *  along with GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
 *  http://www.gnu.org/copyleft/gpl.html
 *
 */

#pragma once
#include "TypeDef.h"

// struct FilterSetting is used to hold parameters for the filter & lrc shower
// it also has functions to serialization and deserialization
// Now, I just implements serialization to and from reg, xml hasn't been implemented
struct FilterWinSetting
{
      // Constructor and destructor
      FilterWinSetting(const tstring & RegPath);
	  ~FilterWinSetting();
      // Serialize to and deserialize from window's reg
	  bool SerializeToReg();
	  bool DeserializeFromReg();
      // Serialize to and deserialize from xml file(not be implemented)
	  bool SerializeToXML();
	  bool DeserializeFromXML();
      // Set defualt value for data member
	  void SetDefaultVal();

      bool m_KaraokeMode;                        // Set karaoke or not
	  bool m_GradientMode;                       // Set gradient or not(in gradient mode, the previous focus line will be painted with weak foucs color when current focus line is painted with focus color)
	  bool m_AutoResizeMode;                     // Set show window auto-size to fit the lrc
      bool m_TopMostMode;                        // Wether set the lrc show window topmost      
      int m_AlignmentOpt;                        // Set alignment(left, center, right)
	  int m_LrcLineInterval;                     // Set interval bewteen lines
	  COLORREF m_BgClr;                          // Background color
	  COLORREF m_CommClr;                        // Common line color
	  COLORREF m_FocusClr;                       // Focus line color
      HWND m_LrcShowWin;                         // The handler of window for lrc showing
	  LOGFONT m_LrcFont;                         // The font type for lrc
      tstring m_RegPath;                         // Parameters save & load windows register path
};
